/*
 * Created by 岱青海蓝信息系统(北京)有限公司 on 17-7-21 下午5:23
 * Copyright (c) 2017. All rights reserved.
 */

package com.example.dqhl.recycleviewdemo.view;

import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.os.Build;
import android.util.AttributeSet;
import android.view.View;

/**
 * Created by dqhl on 17/7/21.
 */
public class CoustomCircleView extends View {

    private Paint paint;

    public CoustomCircleView(Context context) {
        super(context);
        initPaint();
    }

    public CoustomCircleView(Context context, AttributeSet attrs) {
        super(context, attrs);
        initPaint();
    }

    public CoustomCircleView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        //初始化画笔
        initPaint();
    }


    private void initPaint() {
        paint = new Paint();
        paint.setColor(Color.RED);
        paint.setStrokeWidth(10.0f); //设置线宽
        //抗锯齿
        paint.setAntiAlias(true);
        paint.setDither(true);
        // 设置绘制模式
        //画线 分为三种： 画线 填充 画线和填充
//        paint.setStyle(Paint.Style.FILL);//STROKE  FILL FILL_AND_STROKE
        paint.setStrokeCap(Paint.Cap.ROUND);//设置线头的形状。线头形状有三种：BUTT 平头、ROUND 圆头、SQUARE 方头。默认为 BUTT。
        paint.setStrokeJoin(Paint.Join.ROUND);//设置拐角的形状。有三个值可以选择：MITER 尖角、 BEVEL 平角和 ROUND 圆角。默认为 MITER。


    }


    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

//        canvas.drawLine(20, 20, 80, 80, paint);

        //通过线  连接成字 显示
//        float[] points = {20, 20, 120, 20, 70, 20, 70, 120, 20, 120, 120, 120, 150, 20, 250, 20, 150, 20, 150, 120, 250, 20, 250, 120, 150, 120, 250, 120};
//        canvas.drawLines(points, paint);
        /**
         * drawRGB(int r, int g, int b) 和 drawARGB(int a, int r, int g, int b) ，它们和 drawColor(color) 只是使用方式不同，作用都是一样的。
         * 这类颜色填充方法一般用于在绘制之前设置底色，或者在绘制之后为界面设置半透明蒙版
         * */
//        canvas.drawColor(Color.parseColor("#88880000"));//会在原有的绘制效果上加一层半透明的红色遮罩。

//        canvas.clip
        //画圆 圆心的x坐标。 圆心的y坐标。 圆的半径。绘制时所使用的画笔。
//        canvas.drawCircle(150, 50, 40, paint);
        //画方形  左 上 右 下  距离手机左边 和 距离手机顶部  四条边距离屏幕左侧和上侧的距离 通过他来控制大小

//        canvas.drawRect(300, 100, 400, 300, paint);

        //圆角矩形
//        canvas.drawRoundRect(100, 200, 500, 300, 50, 50, paint);
        /**
         *
         * 它还有两个重载方法 drawRect(RectF rect, Paint paint) 和 drawRect(Rect rect, Paint paint) ，让你可以直接填写 RectF 或 Rect 对象来绘制矩形。
         * */

        //画点
//        canvas.drawPoint(25, 25, paint);

//        float[] points = {0, 0, 50, 50, 50, 100, 100, 50, 100, 100, 150, 50, 150, 100};
//// 绘制四个点：(50, 50) (50, 100) (100, 50) (100, 100)
//        canvas.drawPoints(points, 2 /* 跳过两个数，即前两个 0 */,
//                10 /* 一共绘制 8 个数（4 个点）*/, paint);

        //椭圆
//        canvas.drawOval(50, 50, 350, 200, paint);

        /**
         * 这是一个居中的圆
         */
        float x = (getWidth() - getHeight() / 2) / 2;
        float y = getHeight() / 4;
//        canvas.drawCircle(x, y, 40, paint);

        RectF oval = new RectF((float) (x * 2.5), y / 3 - 150,
                (getWidth() * 2), getHeight() + 150);

        canvas.drawArc(oval, 90, 200, true, paint);

        /**
         *
         * drawArc() 是使用一个椭圆来描述弧形的。left, top, right, bottom 描述的是这个弧形所在的椭圆；
         * startAngle 是弧形的起始角度（x 轴的正向，即正右的方向，是 0 度的位置；顺时针为正角度，逆时针为负角度）
         * sweepAngle 是弧形划过的角度；
         * useCenter 表示是否连接到圆心，如果不连接到圆心，就是弧形，如果连接到圆心，就是扇形。
         * */
        paint.setStyle(Paint.Style.FILL); // 填充模式
        canvas.drawArc(100, 50, 400, 250, -110, 100, true, paint); // 绘制扇形
        canvas.drawArc(100, 50, 400, 250, 20, 140, false, paint); // 绘制弧形
        paint.setStyle(Paint.Style.STROKE); // 画线模式
        canvas.drawArc(200, 100, 800, 500, 180, 60, false, paint); // 绘制不封口的弧形

    }

}
